DOCUMENTATION DE VPL3

A propos de VPL

VPL est un langage de programmation visuel basé sur des blocs. Vous pouvez créer des comportements pour Thymio en associant des conditions/ événements à des actions.

Créer un programme

Le programme est créé au centre de l’interface, ou l’utilisateur peut associer des événements, que le robot peut détecter, avec des actions, que le robot doit exécuter. Pour créer une ligne de programme, ils suffit de tirer un ou plusieurs événements depuis la liste de gauche vers la partie gauche de la ligne de code. Ensuite, associez une ou plusieurs actions que vous souhaitez voir effectuées dans la partie droite de la ligne de code, depuis la liste à droite. Une ligne de code doit toujours contenir au minimum un événement et une action. Deux lignes différentes ne peuvent pas avoir exactement la même combinaison d’événement et de conditions. Si deux lignes dont les événements se produisent simultanément ont des actions contradictoires, par exemple si l’une spécifie que le robot doit avancer et l’autre que le robot doit reculer, le résultat est indéterminé.

Les événements sont représentés en orange et les actions en bleu. Pour mieux les distinguer même lors d’une impression en noir et blanc, les blocs d’événements comprennent un marquage dans le coin en haut à droite:

Une ligne de programme complète peut être décrite par une phrase du type: “quand l'Événement a lieu, alors l’Action est exécutée”.

Evénements et conditions d’événements

La partie gauche d’une ligne de programme peut contenir autant de conditions que nécessaire. Les conditions permettent de mieux préciser l’événement qui est déclenché. Dans le cas de la ligne ci-dessous, le programme signifie  “quand on appuie sur le bouton droit (événement), si le couleur du bas de Thymio est magenta (condition), alors le robot commence à avancer en tournant à droite”. Les conditions sont représentées légèrement plus petites pour les différencier de l’événement principal.


Alors que “appuyer sur le bouton” est un vrai événement, certains blocs (états des LED et variables internes) représentent des valeurs internes du robot et non de vrais événements. Dans le cas ou l’une de ces icônes et placée en premier, la ligne de programme montrera toutes les conditions au même niveau, et toutes les conditions seront examinées avec la même priorité. La ligne ci-dessous, par exemple, signifie “quand on atteint la situation dans laquelle la couleur du bas de Thymio est magenta (condition) et le bouton droit est appuyé (condition), alors le robot commence à avancer en tournant à droite”.

Il est important de noter d’après l’exemple donné qu’inverser l’événement et la condition produit des comportements très différents. Détecter la pression sur le bouton, avec condition sur la couleur, diffère de détecter les deux conditions combinées. Si la couleur magenta apparaît après avoir appuyé sur le bouton, l’événement du premier exemple n’est pas déclenché, alors que la conjonction des deux conditions (quelle que soit celle qui est arrivée en premier) déclenche l’événement du second exemple.

Toutes les LED et les icônes d’états internes ne peuvent être que des conditions, et jamais des événements. Toutes les lectures de capteurs et le minuteur peuvent être utilisés comme événements.

Avertissements et erreurs

Un programme est prêt à être exécuté par le robot une fois que l’utilisateur a inclus toutes les fonctionnalités désirées, et qu’il n’y a plus d’erreurs. Les erreurs sont signalées par un grand marqueur rouge, avec le message d’erreur affiché en bas de l’interface sur un fond rouge pâle. Des erreurs apparaissent, par exemple, si le programme comporte une ligne avec un événement mais sans action associée. Dans ce cas, le robot ne sais pas quoi faire. Une erreur apparaîtra également si deux lignes ont des événements identiques (paramètres et conditions compris). Dans ce cas le robot ne peut pas savoir quoi faire.

Parfois certaines lignes de programme peuvent techniquement être exécutées mais ont peu de sens; ceci peut générer des avertissements. Les marqueurs d’avertissements s’affichent en jaune, et le message correspondant apparaît au même endroit que les messages d’erreurs, en bas. Les avertissements n’empêchent pas le code d’être exécuté, mais signalent des problèmes potentiels. Par exemple, un avertissement apparaît si aucun capteur n’est spécifié dans un bloc de capteur de proximité. Ceci peut mener à un comportement imprévu.

Les erreurs s’affichent de manière prioritaire sur les avertissements, car elles empêchent l’exécution du programme. Le message affiché en bas de l’interface sera donc la première erreur, ou le premier avertissement si il n’y a aucune erreur.

Connexion d’un robot Thymio

La méthode de connexion dépend de l’environnement que vous utilisez. Dans l’interface VPL3, une icône montre le statut de la connexion comme suit :

Un robot Thymio est connecté

Aucun robot Thymio n’est connecté

Exécution du programme

EXECUTER

Si le bouton EXÉCUTER est vert, cela signifie que le code ne comporte pas d'erreur, qu’un robot est connecté et que le code de l’interface n’est pas encore en cours d’exécution sur le robot.

Quand l’utilisateur appuie sur EXÉCUTER, le code est envoyé au robot et exécuté, et le bouton change d’apparence pour devenir RECOMMENCER.

RECOMMENCER

Si l’utilisateur appuie sur RECOMMENCER, le même code est renvoyé au robot et redémarré.

Dès que le code est modifié par l’utilisateur, le bouton reprend sa forme EXÉCUTER, ce qui indique que le code en cours d'exécution sur le robot ne correspond plus à celui qui est visible dans l’interface. Le bouton reprend aussi sa forme EXÉCUTER si le bouton STOP est appuyé.

Description détaillée des blocs:

Démarrage du programme

Icône de démarrage du programme

Cet événement n'utilise pas de capteur de Thymio.

Conditions de déclenchement : cet événement est déclenché au démarrage du programme sur le robot, lorsqu'on appuie sur le bouton DEMARRER ou RECOMMENCER dans VPL. Il peut être utilisé pour déterminer des actions qui seront exécutées au début du programme.

Exemple : au début du programme, commencer par (action du robot, par exemple s'allumer en rouge).

Bouton unique

Icône de bouton unique

Capteur(s) utilisé(s): les cinq touches capacitives sur Thymio.

Conditions de déclenchement : cet événement est déclenché lorsqu'on touche un des boutons.

Paramètres : le bouton orange est celui qui déclenche l'événement. Les boutons grisés sont ignorés.

Exemple : lorsqu'on touche le bouton avant, alors … (une action du robot, par exemple rouler vers l'avant).

Sur le côté

Icône de sur le côté

Capteur(s) utilisé(s): accéléromètre 3 axes.

Conditions de déclenchement : Cet événement est déclenché par l'orientation de Thymio par rapport à la direction de la gravité: quand Thymio est posé (ou tenu en l'air) sur son flanc gauche ou droit).

Exemple : Quand le robot est posé sur le côté, alors ... (action du robot, par exemple allumer la lumière de gauche sur le cercle de LED).

Posé sur le dos

Icône de posé sur le dos

Capteur(s) utilisé(s): accéléromètre 3 axes.

Conditions de déclenchement : Cet événement est déclenché par l'orientation de Thymio par rapport à la direction de la gravité: quand Thymio est posé (ou tenu en l'air) sur son dos).

Exemple : Quand le robot est posé à l'envers, alors ... (action du robot, par exemple émettre un bruit énervé).

Détection de chocs

Icône de détection de chocs

Capteur(s) utilisé(s): accéléromètre 3-axes.

Conditions de déclenchement : cet événement est déclenché par un choc, dans n'importe que direction. Une tape de la main sur le robot, par exemple, est détectée comme un choc.

Exemple : Quand le robot est tapé, alors... (action du robot, par exemple avancer).

Détection du sol

Icône de détection du sol

Capteur(s) utilisé(s): les deux capteurs de proximité au sol.

Conditions de déclenchement : cet événement est déclenché par la détection de la réflection de lumière IR sous Thymio, donc par la présence ou l'absence d'une surface réfléchissante sous le robot. Une surface noire matte, non réfléchissante, ou une surface transparente provoqueront une réponse du capteur similaire à une absence de surface. De même, une surface noire brillante peut réfléchir beaucoup de lumière et donner une réponse similaire à du papier blanc.

Paramètres : quand le sol est blanc avec une bordure rouge, l'événement est déclenché si une surface est détectée. Quand il est noir, l'événement est déclenché si aucune surface n'est détectée (vide, mais aussi surface transparente ou noire).

Exemple : Quand Thymio est soulevé et qu'il ne détecte plus le sol, alors... (action du robot, par exemple émettre un bruit aigu).

Capteurs au sol

Icône de capteurs au sol

Capteur(s) utilisé(s): les deux capteurs de proximité au sol.

Conditions de déclenchement : cet événement est déclenché par la détection de la réflection de lumière IR sous Thymio, donc par la présence ou l'absence d'une surface réfléchissante sous le robot. Une surface noire matte, non réfléchissante, ou une surface transparente provoqueront une réponse du capteur similaire à une absence de surface. De même, une surface noire brillante peut réfléchir beaucoup de lumière et donner une réponse similaire à du papier blanc.

Cet événement permet à l'utilisateur de définir séparément ce que les capteurs gauche et droit doivent détecter pour déclencher l'événement. Ceci permet de détecter facilement des lignes noires sur du papier blanc, par exemple pour créer un comportement de suivi de piste.

Paramètres : un capteur blanc avec un bord rouge montre que le déclenchement de l'événement se fait quand le robot est sur une surface réfléchissante, par exemple blanche. Un capteur noir montre que l'événement est déclenché quand la surface n'est pas détectée (robot soulevé, ou posé sur une surface noire ou transparente). Un capteur grisé est ignoré et ne participe pas au déclenchement de l'événement.

Exemple : Quand le capteur de gauche détecte une surface blanche, alors ... (action du robot, par exemple tourner à droite pour retourner sur une piste noire).

Capteurs de proximité

Icône de capteurs de proximité

Capteur(s) utilisé(s): Les cinq capteurs de proximité à l'avant de Thymio et les deux à l'arrière.

Conditions de déclenchement : les capteurs de proximité infrarouge mesurent la lumière IR réfléchie sur les objets placés devant eux. Si un objet est proche ou très réfléchissant, le capteur détectera un réflexion de lumière. Si il n'y a pas de réflexion détectée, cela peut signifier qu'il n'y a rien devant le capteur, ou qu'il y a un objet qui absorbe l'IR (un objet noir). L'événement est déclenché par la détection d'objets autour de Thymio, dans sept directions, par sept capteurs différents.

Paramètres : un capteur blanc avec un bord rouge montre que le déclenchement de l'événement se fait quand il y a réflexion de lumière IR, donc quand un objet est détecté devant le capteur. Un capteur noir montre que l'événement est déclenché quand il n'y a pas de réflection (obstacle retiré, objet noir ou transparent). Un capteur grisé est ignoré et ne participe pas au déclenchement de l'événement.

Lorsque plusieurs capteurs sont sélectionnés conjointement pour déclencher l'événement, le déclenchement si fait si toutes les conditions sont réunies simultanément. Si le capteur avant et le capteur gauche sont réglés sur la détection d'un objet, l'événement a lieu seulement si le capteur avant ET le capteur gauche voient un objet.

Exemple : Quand le capteur de gauche détecte un obstacle, alors ... (action du robot, par exemple tourner à droite pour éviter l'obstacle).

Etat de la couleur du haut

Icône de l'état de la couleur du haut

Cette condition n'utilise pas de capteur de Thymio. Elle lit l'état de la LED RGB (valeurs de rouge, vert et bleu) en haut de Thymio. Ce bloc ne peut être utilisé que comme condition, pas comme événement principal.

Conditions de déclenchement : cette condition est vraie si la LED RGB du haut de Thymio est réglée sur une certaine couleur. La comparaison de chaque composante est fait sur une tranche de valeurs, permettant ainsi à la condition d'être remplie même pour une correspondance de couleur approximative.

Paramètres : l'utilisateur peut choisir parmi 7 couleurs ou le dernier paramètre, qui représente la LED éteinte

Exemple : Si la LED du haut de Thymio est jaune, alors... (action du robot, par exemple s'allumer en rouge).

Etat de la couleur du bas

Icône de l'état de la couleur du bas

Cette condition n'utilise pas de capteur de Thymio. Elle lit l'état de la LED RGB (valeurs de rouge, vert et bleu) en bas de Thymio. Ce bloc ne peut être utilisé que comme condition, pas comme événement principal.

Conditions de déclenchement : cette condition est vraie si la LED RGB du bas de Thymio est réglée sur une certaine couleur. La comparaison de chaque composante est fait sur une tranche de valeurs, permettant ainsi à la condition d'être remplie même pour une correspondance de couleur approximative.

Paramètres : l'utilisateur peut choisir parmi 7 couleurs ou le dernier paramètre, qui représente la LED éteinte

Exemple : Si les LED du basde Thymio sont bleues, alors... (action du robot, par exemple s'allumer en rouge).

Etat des 8 LED

Icône d'état des 8 LED

Cette condition n'utilise pas de capteur de Thymio. Elle lit l'état des 8 LEDs en cercle autour des boutons de Thymio. Ce bloc ne peut être utilisé que comme condition, pas comme événement principal.

Conditions de déclenchement : cette condition est vraie si les LED du cercle de Thymio montrent la même configuration de LED allumées et éteintes que celle spécifiée sur le bloc. Comme chaque LED peut être allumée ou éteinte, il y a 256 combinaisons possibles.

Paramètres : chaque LED peut être réglée sur allumée (jaune) ou éteinte (gris foncé). Aucune LED n'est ignorée.

Exemple : Si uniquement la LED avant est allumée, alors... (action du robot, par exemple avancer).

Directions

Icône de directions

Actuateurs: les deux moteurs des roues.

Action: cette action spécifie une direction de mouvement pour Thymio, parmi un choix de 9 configurations prédéfinies.

Paramètres : Chaque flèche représente un déplacement de Thymio. Le bouton central arrête Thymio.

Exemple : lorsque... (événement, par exemple détection d'un obstacle à gauche), alors avancer en direction avant droite.

Spécifier la couleur du haut

Icône pour spécifier la couleur du haut

Actuateur: LED RGB du haut

Action: cette action règle la couleur des LED du dessus de Thymio, en choisissant parmi des couleurs prédéfinies.

Paramètres : l'utilisateur peut choisir parmi 7 couleurs ou le dernier paramètre, qui représente la LED éteinte.

Exemple : lorsque... (événement, par exemple détection d'un obstacle à gauche), alors définir la couleur du haut à jaune.

Spécifier la couleur du bas

Icône pour spécifier la couleur du bas

Actuateur: LED RGB du bas

Action: cette action règle la couleur des LED du dessous de Thymio, en choisissant parmi des couleurs prédéfinies.

Paramètres : l'utilisateur peut choisir parmi 7 couleurs ou le dernier paramètre, qui représente la LED éteinte.

Exemple : lorsque... (événement, par exemple détection d'un obstacle à gauche), alors définir la couleur du bas à bleu.

Spécifier l'état des 8 LED

Icône pour spécifier l'état des 8 LED

Actuateurs: Les 8 LED du cercle autour des boutons de Thymio.

Action: cette action allume ou éteint chacune des LED du cercle.

Paramètres : chaque led peut être allumée (jaune) ou éteinte (gris foncé).

Exemple : lorsque... (événement, par exemple si le bouton avant a été touché), alors allumer la LED avant et éteindre toutes les autres.

Jouer une mélodie

Icône pour jouer une mélodie

Actuateur: haut-parleur

Action: cette action fait jouer une mélodie à Thymio.

Paramètres : chaque ligne bleue correspond à un ton. Jusqu'à 6 notes peuvent être placées sur ces lignes. Des clics consécutifs permettent de passer d'une noire (1 unité de temps), à une blanche (deux unités de temps), à une pause (4 unités de temps).

Exemple : lorsque... (événement, par exemple si le bouton avant a été touché), alors jouer la mélodie de début.